package sanshui.system.trade.model;

import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
import sanshui.system.trade.db.entity.TradeWorker;
import sanshui.system.trade.factory.data.DataMarketType;
import sanshui.system.trade.factory.data.FilterModel;
import sanshui.system.trade.factory.data.TradeMarketKey;
import sanshui.system.trade.factory.data.TradeSystemType;
import sanshui.system.trade.pojo.BaseAo;

import java.time.LocalDateTime;
import java.util.List;

@Data
@ToString
public class TradeWorkerModel extends TradeWorker {
    Integer pageNum;
    Integer pageSize;
    Long userId;
    Long workerId;
    Long accId;
    String workerStatus;
    @ApiParam(required = false, defaultValue = "")
    @ApiModelProperty(value = "额外的交易参数,JSON格式")
    String extraTradeParams;
    @ApiParam(required = false)
    @ApiModelProperty(value = "账户描述")
    String accDesc;
    @ApiModelProperty(value = "量化交易账户TOKEN信息")
    AccLoginInfoModel accLoginInfoModel;
    @ApiParam(required = false, defaultValue = "T1")
    @ApiModelProperty(value = "交易系统名称")
    String tradeName;
    @ApiParam(required = false, defaultValue = "T1")
    @ApiModelProperty(value = "市场数据类型：T0、T1")
    String dataMarketType;

    @ApiParam(required = false, defaultValue = "A_GU")
    @ApiModelProperty(value = "市场类型：A_GU,OKE")
    String tradeMarketKey;

    @ApiParam(required = false, defaultValue = "BACK_TRADE")
    @ApiModelProperty(value = "交易系统类型：RT,BACK_TRADE")
    String tradeSystemType;

    @ApiParam(required = false, defaultValue = "")
    @ApiModelProperty(value = "固定选股标的，则从池子里面选股")
    List<String> chooseTargets;

    String chooseTargetsStr;


    @ApiParam(required = false, defaultValue = "")
    @ApiModelProperty(value = "指数或板块所有股票")
    List<String> chooseTargetsIndex;

    @ApiParam(required = false, defaultValue = "DEFAULT")
    @ApiModelProperty(value = "指标列表：DEFAULT、M45")
    List<String> indicators;

    @ApiParam(required = false, defaultValue = "DEFAULT")
    @ApiModelProperty(value = "交易策略：DEFAULT")
    String strategy;
    @ApiParam(required = false, defaultValue = "DEFAULT")
    @ApiModelProperty(value = "风控策略：DEFAULT")
    String riskStrategy;

    @ApiParam(required = false, defaultValue = "20250101150000")
    @ApiModelProperty(value = "数据开始时间")
    String startTime;
    @ApiParam(required = false, defaultValue = "20250201150000")
    @ApiModelProperty(value = "数据结束时间")
    String endTime;
    @ApiParam(required = false, defaultValue = "1d")
    @ApiModelProperty(value = "数据频率时间")
    String frequency;
    @ApiModelProperty(value = "需要睡眠时间")
    Long millis;
    @ApiModelProperty(value = "需要过滤的板块：创业板？科创板？")
    String filterModel;
    @ApiParam(required = false, defaultValue = "1000")
    @ApiModelProperty(value = "账户初始价值")
    String initValue;
    @ApiParam(required = false, defaultValue = "0")
    @ApiModelProperty(value = "账户当前价值")
    String currentValue;
    @ApiParam(required = false, defaultValue = "0")
    @ApiModelProperty(value = "账户当前现金")
    String currentCash = initValue;
    @ApiParam(required = false, defaultValue = "100")
    @ApiModelProperty(value = "小数点位数")
    private String priceAround = "100";
    @ApiParam(required = false, defaultValue = "1")
    @ApiModelProperty(value = "最少交易数量")
    private String numAround = "1";
    @ApiParam(required = false, defaultValue = "100")
    @ApiModelProperty(value = "买入，过户手续费（百万）")
    private String buyFeeRateGuo = "100";
    @ApiParam(required = false, defaultValue = "105")
    @ApiModelProperty(value = "买入，券商手续费（百万）")
    private String buyFeeRateQuan = "105";
    @ApiParam(required = false, defaultValue = "105")
    @ApiModelProperty(value = "卖出，券商手续费（百万）")
    private String sellFeeRateQuan = "105";
    @ApiParam(required = false, defaultValue = "500")
    @ApiModelProperty(value = "卖出，印花手续费（百万）")
    private String sellFeeRateYin = "500";
    @ApiParam(required = false, defaultValue = "100")
    @ApiModelProperty(value = "卖出，过户手续费（百万）")
    private String sellFeeRateGuo = "100";
    @ApiParam(required = false, defaultValue = "0")
    @ApiModelProperty(value = "买入，固定手续费（分）")
    private String buyFixedFee = "0";
    @ApiParam(required = false, defaultValue = "0")
    @ApiModelProperty(value = "卖出，固定手续费（分）")
    private String sellFixedFee = "0";
    @ApiParam(required = false, defaultValue = "1000000")
    @ApiModelProperty(value = "手续费小数点，默认百万")
    private String feeRateAround = "1000000";
    String updateTime;
}
